package com.yiyi.system.service.impl;

import java.util.List;
import java.util.Random;

import com.yiyi.system.domain.SysWxcodeTwo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yiyi.system.mapper.CsIpWxCodeMapper;
import com.yiyi.system.domain.CsIpWxCode;
import com.yiyi.system.service.ICsIpWxCodeService;

/**
 * ip地址与企业微信匹配Service业务层处理
 *
 * @author yiyi
 * @date 2024-10-18
 */
@Service
public class CsIpWxCodeServiceImpl implements ICsIpWxCodeService {
    @Autowired
    private CsIpWxCodeMapper csIpWxCodeMapper;

    /**
     * 查询ip地址与企业微信匹配
     *
     * @param id ip地址与企业微信匹配主键
     * @return ip地址与企业微信匹配
     */
    @Override
    public CsIpWxCode selectCsIpWxCodeById(Long id) {
        return csIpWxCodeMapper.selectCsIpWxCodeById(id);
    }

    /**
     * 查询ip地址与企业微信匹配列表
     *
     * @param csIpWxCode ip地址与企业微信匹配
     * @return ip地址与企业微信匹配
     */
    @Override
    public List<CsIpWxCode> selectCsIpWxCodeList(CsIpWxCode csIpWxCode) {
        return csIpWxCodeMapper.selectCsIpWxCodeList(csIpWxCode);
    }

    /**
     * 新增ip地址与企业微信匹配
     *
     * @param csIpWxCode ip地址与企业微信匹配
     * @return 结果
     */
    @Override
    public int insertCsIpWxCode(CsIpWxCode csIpWxCode) {
        int row = 0;
        // 获取全部企业微信二维码
        List<SysWxcodeTwo> wxCodeList = csIpWxCodeMapper.getWxCodeList();
        // 随机获取一条数据
        if (!wxCodeList.isEmpty()) {
            Random random = new Random();
            int randomIndex = random.nextInt(wxCodeList.size());
            SysWxcodeTwo randomWxCode = wxCodeList.get(randomIndex);
            // 设置企业微信二维码
            csIpWxCode.setWxCode(randomWxCode.getWxCode());
            row = csIpWxCodeMapper.insertCsIpWxCode(csIpWxCode);
        }
        return row;
    }

    /**
     * 根据ip 获取企业微信图片
     *
     * @param requestIp
     * @return
     */
    @Override
    public List<CsIpWxCode> selectCsIpWxCodeByIp(String requestIp) {
        return csIpWxCodeMapper.selectCsIpWxCodeByIp(requestIp);
    }

    /**
     * 修改ip地址与企业微信匹配
     *
     * @param csIpWxCode ip地址与企业微信匹配
     * @return 结果
     */
    @Override
    public int updateCsIpWxCode(CsIpWxCode csIpWxCode) {
        return csIpWxCodeMapper.updateCsIpWxCode(csIpWxCode);
    }

    /**
     * 批量删除ip地址与企业微信匹配
     *
     * @param ids 需要删除的ip地址与企业微信匹配主键
     * @return 结果
     */
    @Override
    public int deleteCsIpWxCodeByIds(Long[] ids) {
        return csIpWxCodeMapper.deleteCsIpWxCodeByIds(ids);
    }

    /**
     * 删除ip地址与企业微信匹配信息
     *
     * @param id ip地址与企业微信匹配主键
     * @return 结果
     */
    @Override
    public int deleteCsIpWxCodeById(Long id) {
        return csIpWxCodeMapper.deleteCsIpWxCodeById(id);
    }

    /**
     * 删除全部
     *
     * @return
     */
    @Override
    public int removeAll() {
        int row = 1;
        // 获取
        List<CsIpWxCode> csIpWxCodes = csIpWxCodeMapper.selectCsIpWxCodeList(new CsIpWxCode());

        for (CsIpWxCode csIpWxCode : csIpWxCodes) {
            // 判断当前老师是否在线(根据微信码地址获取信息)
            SysWxcodeTwo wxCodeDataByWxCode = csIpWxCodeMapper.getWxCodeDataByWxCode(csIpWxCode.getWxCode());
            if (wxCodeDataByWxCode == null) {
                /** 离线了  需要获取最新在线 赋值*/
                // 获取全部企业微信二维码
                List<SysWxcodeTwo> wxCodeList = csIpWxCodeMapper.getWxCodeList();
                // 随机获取一条数据
                if (!wxCodeList.isEmpty()) {
                    Random random = new Random();
                    int randomIndex = random.nextInt(wxCodeList.size());
                    SysWxcodeTwo randomWxCode = wxCodeList.get(randomIndex);
                    // 设置企业微信二维码
                    csIpWxCode.setWxCode(randomWxCode.getWxCode());
                    row = csIpWxCodeMapper.updateCsIpWxCode(csIpWxCode);
                }
            }
        }

        return row;
    }
}
